/*
 * SDLEngine.h
 *  Es el motor de la aplicación que se encarga de:
 *  	-	levantar eventos y transformarlos;
 *  	-	dibujar la pantalla
 */

#ifndef SDLWRAPPER_H_
#define SDLWRAPPER_H_

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include "Event.h"
#include "Surface.h"
#include <string>

class SDLWrapper {
public:
	SDLWrapper(std::string screenTitle, int widthResolution, int heightResolution, int bitsPerPixel,Color bgrColor);
	virtual ~SDLWrapper();

	/* Inicializa el motor de la interfaz grafica. */
	virtual bool start();

	/* Detiene momentaneamente el motor de la interfaz grafica. */
	virtual void stop();

	virtual void setPlayerName(std::string playerName);

	//levanta el evento de la cola de SDL y lo transforma en un Event
	int pullEvent(Event** event);

	/* Limpia la pantalla. */
	virtual void clearScreen();

	void refreshScreen();

	void updateVideoMode(int w, int h,Color bgrColor);

	Surface* getMainSurface();

	void changeScreenTitle(std::string screenTitle);

private:

//Evito la copia
	SDLWrapper(SDLWrapper *);

	Surface* screen;
	std::string screenTitle;
	std::string playerName;
	int widthResolution;
	int heightResolution;
	int bitsPerPixel;

	Color bgrColor;
};

#endif /* SDLEngine_H_ */
